class Count {
  constructor(limit){

    this.limit = limit
  }
  
  [Symbol.iterator](){
    let pre1 = 1,pre2 = 1,
        limit = this.limit,
        n = 1;
    return {
      next(){
      
        if(pre1 + pre2 <= limit){
          let obj
          if(n <= 2){
            obj = {
              done:false,
              value:pre1
            }
          }else{
            obj = {
              done:false,
              value:pre1 + pre2
            }
            pre1 = pre2
            pre2 = obj.value
            
          }
          n++
        
          return obj
        }else{
          return {
            done:true,
            value:undefined
          }
        }
      }
    }
  }
}

let count = new Count(36)
console.log(count)
for(let i of count){
  console.log(i)
  // break;
}
// for(let i of count){
//   console.log(i)
//   break;
// }
// let b = [1,2,3,4,5][Symbol.iterator]()
// for(let i of b){
//   console.log(i)
//   break;
// }
// for(let i of b){
//   console.log(i)
//   break;
// }
// 1
// 1
// 2
// 3
// 5
// 8
// 13
// 21
// 34
